// --------------------------------------------------------------------------------------------
// Version: MPL 1.1/GPL 2.0/LGPL 2.1
// 
// The contents of this file are subject to the Mozilla Public License Version
// 1.1 (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
// http://www.mozilla.org/MPL/
// 
// Software distributed under the License is distributed on an "AS IS" basis,
// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
// for the specific language governing rights and limitations under the
// License.
// 
// <remarks>
// Generated by IDLImporter from file nsICellInfo.idl
// 
// You should use these interfaces when you access the COM objects defined in the mentioned
// IDL/IDH file.
// </remarks>
// --------------------------------------------------------------------------------------------
namespace Gecko
{
	using System;
	using System.Runtime.InteropServices;
	using System.Runtime.InteropServices.ComTypes;
	using System.Runtime.CompilerServices;
	
	
	/// <summary>
    ///This Source Code Form is subject to the terms of the Mozilla Public
    /// License, v. 2.0. If a copy of the MPL was not distributed with this file,
    /// You can obtain one at http://mozilla.org/MPL/2.0/. </summary>
	[ComImport()]
	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
	[Guid("d8fae631-7ade-4024-b288-7efe75e6b091")]
	public interface nsICellInfoListCallback
	{
		
		/// <summary>
        /// result is an array of nsICellInfo, which could be instances of
        /// nsIGsmCellInfo, nsIWcdmaCellInfo, nsICdmaCellInfo or nsILteCellInfo.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void NotifyGetCellInfoList(uint count, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)] nsICellInfo[] result);
		
		/// <summary>
        /// Callback function with error message.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		void NotifyGetCellInfoListFailed([MarshalAs(UnmanagedType.CustomMarshaler, MarshalType = "Gecko.CustomMarshalers.AStringMarshaler")] nsAStringBase error);
	}
	
	/// <summary>nsICellInfo </summary>
	[ComImport()]
	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
	[Guid("a9a34341-5a33-4e0a-98e1-13e7ea4228be")]
	public interface nsICellInfo
	{
		
		/// <summary>
        /// Network type. One of the CELL_INFO_TYPE_* constants.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetTypeAttribute();
		
		/// <summary>
        /// Registration state of this cell.
        /// </summary>
		[return: MarshalAs(UnmanagedType.U1)]
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		bool GetRegisteredAttribute();
		
		/// <summary>
        /// Time stamp type. One of the TIMESTAMP_TYPE_* constants.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetTimestampTypeAttribute();
		
		/// <summary>
        /// Time in nanoseconds since boot.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		long GetTimestampAttribute();
	}
	
	/// <summary>nsICellInfoConsts </summary>
	public class nsICellInfoConsts
	{
		
		// 
		public const long CELL_INFO_TYPE_GSM = 1;
		
		// 
		public const long CELL_INFO_TYPE_CDMA = 2;
		
		// 
		public const long CELL_INFO_TYPE_LTE = 3;
		
		// 
		public const long CELL_INFO_TYPE_WCDMA = 4;
		
		// 
		public const long TIMESTAMP_TYPE_UNKNOWN = 0;
		
		// 
		public const long TIMESTAMP_TYPE_ANTENNA = 1;
		
		// 
		public const long TIMESTAMP_TYPE_MODEM = 2;
		
		// 
		public const long TIMESTAMP_TYPE_OEM_RIL = 3;
		
		// 
		public const long TIMESTAMP_TYPE_JAVA_RIL = 4;
		
		// 
		public const long UNKNOWN_VALUE = 0x7FFFFFFF;
	}
	
	/// <summary>nsIGsmCellInfo </summary>
	[ComImport()]
	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
	[Guid("cc476ded-350f-4c25-9a57-6a876e32f092")]
	public interface nsIGsmCellInfo : nsICellInfo
	{
		
		/// <summary>
        /// Network type. One of the CELL_INFO_TYPE_* constants.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		new int GetTypeAttribute();
		
		/// <summary>
        /// Registration state of this cell.
        /// </summary>
		[return: MarshalAs(UnmanagedType.U1)]
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		new bool GetRegisteredAttribute();
		
		/// <summary>
        /// Time stamp type. One of the TIMESTAMP_TYPE_* constants.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		new int GetTimestampTypeAttribute();
		
		/// <summary>
        /// Time in nanoseconds since boot.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		new long GetTimestampAttribute();
		
		/// <summary>
        /// 3-digit Mobile Country Code, 0..999, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetMccAttribute();
		
		/// <summary>
        /// 2 or 3-digit Mobile Network Code, 0..999, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetMncAttribute();
		
		/// <summary>
        /// 16-bit Location Area Code, 0..65535, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetLacAttribute();
		
		/// <summary>
        /// 16-bit GSM Cell Identity described in TS 27.007, 0..65535,
        /// UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetCidAttribute();
		
		/// <summary>
        /// Valid values are 0-31 as defined in TS 27.007 8.5, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetSignalStrengthAttribute();
		
		/// <summary>
        /// Bit error rate 0-7 as defined in TS 27.007 8.5, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetBitErrorRateAttribute();
	}
	
	/// <summary>nsIWcdmaCellInfo </summary>
	[ComImport()]
	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
	[Guid("aa52647b-38dd-487c-be36-b46ed2e99554")]
	public interface nsIWcdmaCellInfo : nsICellInfo
	{
		
		/// <summary>
        /// Network type. One of the CELL_INFO_TYPE_* constants.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		new int GetTypeAttribute();
		
		/// <summary>
        /// Registration state of this cell.
        /// </summary>
		[return: MarshalAs(UnmanagedType.U1)]
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		new bool GetRegisteredAttribute();
		
		/// <summary>
        /// Time stamp type. One of the TIMESTAMP_TYPE_* constants.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		new int GetTimestampTypeAttribute();
		
		/// <summary>
        /// Time in nanoseconds since boot.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		new long GetTimestampAttribute();
		
		/// <summary>
        /// 2 or 3-digit Mobile Network Code, 0..999, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetMccAttribute();
		
		/// <summary>
        /// 2 or 3-digit Mobile Network Code, 0..999, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetMncAttribute();
		
		/// <summary>
        /// 16-bit Location Area Code, 0..65535, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetLacAttribute();
		
		/// <summary>
        /// 28-bit UMTS Cell Identity described in TS 25.331, 0..268435455,
        /// UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetCidAttribute();
		
		/// <summary>
        /// 9-bit UMTS Primary Scrambling Code described in TS 25.331, 0..511,
        /// UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetPscAttribute();
		
		/// <summary>
        /// Valid values are 0-31 as defined in TS 27.007 8.5, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetSignalStrengthAttribute();
		
		/// <summary>
        /// Bit error rate 0-7 as defined in TS 27.007 8.5, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetBitErrorRateAttribute();
	}
	
	/// <summary>nsICdmaCellInfo </summary>
	[ComImport()]
	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
	[Guid("60a38ca7-ca62-4384-aa07-eac7d4893786")]
	public interface nsICdmaCellInfo : nsICellInfo
	{
		
		/// <summary>
        /// Network type. One of the CELL_INFO_TYPE_* constants.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		new int GetTypeAttribute();
		
		/// <summary>
        /// Registration state of this cell.
        /// </summary>
		[return: MarshalAs(UnmanagedType.U1)]
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		new bool GetRegisteredAttribute();
		
		/// <summary>
        /// Time stamp type. One of the TIMESTAMP_TYPE_* constants.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		new int GetTimestampTypeAttribute();
		
		/// <summary>
        /// Time in nanoseconds since boot.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		new long GetTimestampAttribute();
		
		/// <summary>
        /// Network Id, 0..65535, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetNetworkIdAttribute();
		
		/// <summary>
        /// CDMA System Id, 0..32767, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetSystemIdAttribute();
		
		/// <summary>
        /// Base Station Id, 0..65535, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetBaseStationIdAttribute();
		
		/// <summary>
        /// Longitude is a decimal number as specified in 3GPP2 C.S0005-A v6.0.
        /// It is represented in units of 0.25 seconds and ranges from -2592000 to
        /// 2592000, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetLongitudeAttribute();
		
		/// <summary>
        /// Latitude is a decimal number as specified in 3GPP2 C.S0005-A v6.0.
        /// It is represented in units of 0.25 seconds and ranges from -1296000 to
        /// 1296000, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetLatitudeAttribute();
		
		/// <summary>
        /// Valid values are positive integers, UNKNOWN_VALUE if unknown. This value is
        /// the actual RSSI value multiplied by -1.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetCdmaDbmAttribute();
		
		/// <summary>
        /// Valid values are positive integers, UNKNOWN_VALUE if unknown. This value is
        /// the actual Ec/Io multiplied by -10.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetCdmaEcioAttribute();
		
		/// <summary>
        /// Valid values are positive integers, UNKNOWN_VALUE if unknown. This value is
        /// the actual Evdo RSSI value multiplied by -1.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetEvdoDbmAttribute();
		
		/// <summary>
        /// Valid values are positive integers, UNKNOWN_VALUE if unknown. This value is
        /// the actual Evdo Ec/Io multiplied by -10.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetEvdoEcioAttribute();
		
		/// <summary>
        /// Valid values are 0-8, UNKNOWN_VALUE if unknown. 8 is the highest signal to
        /// noise ratio.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetEvdoSnrAttribute();
	}
	
	/// <summary>nsILteCellInfo </summary>
	[ComImport()]
	[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
	[Guid("e7b3e826-bb85-49b2-a2f1-70af46c47733")]
	public interface nsILteCellInfo : nsICellInfo
	{
		
		/// <summary>
        /// Network type. One of the CELL_INFO_TYPE_* constants.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		new int GetTypeAttribute();
		
		/// <summary>
        /// Registration state of this cell.
        /// </summary>
		[return: MarshalAs(UnmanagedType.U1)]
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		new bool GetRegisteredAttribute();
		
		/// <summary>
        /// Time stamp type. One of the TIMESTAMP_TYPE_* constants.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		new int GetTimestampTypeAttribute();
		
		/// <summary>
        /// Time in nanoseconds since boot.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		new long GetTimestampAttribute();
		
		/// <summary>
        /// 3-digit Mobile Country Code, 0..999, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetMccAttribute();
		
		/// <summary>
        /// 2 or 3-digit Mobile Network Code, 0..999, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetMncAttribute();
		
		/// <summary>
        /// 28-bit Cell Identity, 0..268435455, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetCidAttribute();
		
		/// <summary>
        /// Physical cell id, 0..503, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetPcidAttribute();
		
		/// <summary>
        /// 16-bit tracking area code, 0..65535, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetTacAttribute();
		
		/// <summary>
        /// Valid values are 0-31 as defined in TS 27.007 8.5, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetSignalStrengthAttribute();
		
		/// <summary>
        /// The current Reference Signal Receive Power in dBm multipled by -1.
        /// Range: 44 to 140 dBm, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetRsrpAttribute();
		
		/// <summary>
        /// The current Reference Signal Receive Quality in dB multiplied by -1.
        /// Range: 3 to 20 dB, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetRsrqAttribute();
		
		/// <summary>
        /// The current reference signal signal-to-noise ratio in 0.1 dB units.
        /// Range: -200 to +300 (-200 = -20.0 dB, +300 = 30dB), UNKNOWN_VALUE if
        /// unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetRssnrAttribute();
		
		/// <summary>
        /// The current Channel Quality Indicator. Range: 0 to 15, UNKNOWN_VALUE if
        /// unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetCqiAttribute();
		
		/// <summary>
        /// Timing advance in micro seconds for a one way trip from cell to device.
        /// Approximate distance can be calculated using 300m/us * timingAdvance.
        /// Range: 0 to 0x7FFFFFFE, UNKNOWN_VALUE if unknown.
        /// </summary>
		[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
		int GetTimingAdvanceAttribute();
	}
}
